Dynamically typed languages such as JavaScript, in which a majority of type checking is performed at run-time instead of at compile-time, have become a de-facto standard for web-based applications. However, generating efficient code for dynamically typed languages is a challenge, because such languages require frequent dynamic type checks. An average of 12.9% of the instructions of a typical program relate to type checks, while some programs may have type check instructions that constitute twenty percent or more of their total instructions. As so many of the total instructions of a typical program are used for type checking, the overall efficiency of such a program could be greatly improved by improving the efficiency of type checking.
Meanwhile, innovations in mobile device programmability have opened up embedded targets to the same class of programmers as general web applications, instead of the specialized embedded developers of the past, by providing support for the execution of dynamically typed languages. Embedded processors for mobile devices typically do not employ traditional heavy-weight architectural techniques for improving the efficiency of code execution. Instead, light-weight, minimal techniques are used. For such light-weight architectures originally designed for executing languages such as C, dynamically typed languages pose special performance problems.
What is needed is a light-weight architecture that can improve the efficiency of execution of dynamically typed languages on any sort of computing device, but particularly on mobile computing devices.